package java.bloco;

import java.Condicao;
import java.classe.TokensSource;
import java.util.ArrayList;



public class Se implements TokensSource {
	String logica = null;

	Condicao condicao = null;

	Senao senao = null;

	ListaSenaoSe senoesSe = null;

	public Se(Condicao condicao) {
		this.condicao = condicao;
	}

	public void setLogica(String logica) {
		this.logica = logica;
	}

	public String codigoFonte() {
		String logica = this.logica == null ? NONVALUE : this.logica;
		String condicao = this.condicao == null ? NONVALUE : this.condicao
				.codigoFonte();
		String senoesSe = this.senoesSe == null ? NONVALUE : this.senoesSe
				.codigoFonte();
		String senao = this.senao == null ? NONVALUE : this.senao.codigoFonte();
		return IF + INICIOPARENTECE + condicao + FIMPARENTECE + INICIOBLOCO
				+ logica + FIMBLOCO + senoesSe + senao;
	}

	public void setSenao(String logica) {
		senao = new Senao();
		senao.setLogica(logica);
	}

	class ListaSenaoSe extends ArrayList<SenaoSe> {
		private static final long serialVersionUID = 6883000741513329843L;

		public String codigoFonte() {
			String s = NONVALUE;
			for (SenaoSe ss : this) {
				s += ss.codigoFonte();
			}
			return s;
		}
	}

	public void addSenaoSe(Condicao condicao, String logica) {
		senoesSe = senoesSe == null ? new ListaSenaoSe() : senoesSe;
		senoesSe.add(new SenaoSe(condicao, logica));
	}

}
